from .QueryStudentsGrade import QueryStudentsGrade
from .QueryFailByMajor import QueryFailByMajor
from .CountFailByMajor import CountFailByMajor


class QueryFactory:
    """
    学生成绩查询方法工厂
    """
    __factory = {
        # 根据学号或学生姓名,查询学生个人成绩
        "query_students_grade": QueryStudentsGrade,
        # 根据专业、年级、学年、学期，查询统计该专业所有课程不及格学生的成绩明细
        "query_fail_by_major": QueryFailByMajor,
        # 根据专业、年级、学年、学期，统计该专业所有课程的不及格人数，按照学年、学期、课程名称、课程代码、不及格人数进行倒序显示
        "count_fail_by_major": CountFailByMajor
    }

    @staticmethod
    def get_query_method(method):
        if method in QueryFactory.__factory:
            return QueryFactory.__factory[method]  # 返回类,不是返回类的实例化
        else:
            raise ValueError("找不到方法 '{}'".format(str(method)))
